/**
 * 20182018年1月16日
 *
 * @author zhuwh4
 */
package com.utils.failureanalysis.data;

import com.utils.failureanalysis.data.dao.AnalysisDataRepository;
import com.utils.failureanalysis.data.dao.CountRecorderRepository;
import com.utils.failureanalysis.data.model.*;
import com.utils.failureanalysis.data.model.singleModule.CountRecorder;
import com.utils.failureanalysis.data.model.singleRecorder.AnalysisData;
import com.utils.failureanalysis.data.util.FindFilePath;
import com.utils.failureanalysis.data.util.ParseResultFiles;
import com.utils.failureanalysis.data.util.SortTool;
import com.utils.failureanalysis.exceptions.fileNotFoundException.PathIsNullException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Optional;

/**
 * 统计各模块fail与details
 * 统计各模块pass数与fail数
 * 生存周期跨testID
 * @author zhuwh4
 *
 */
@Service
public class DataService {
    //	获取历史分析结果
    static final boolean isDebug = false;
    @Autowired
    AnalysisDataRepository analysisDataRepository;
    @Autowired
    CountRecorderRepository countRecorderRepository;
    @Autowired
    ParseResultFiles prf;

    public DataService() {
    }

    /**
     * 通过testId解析所有模块数据,返回fail的list数据,更新数据库
     *
     * @param testId
     * @return
     */
    public List<AnalysisData> getData(String testId) throws IOException, PathIsNullException {
//		先查询数据库历史记录中是否存在解析结果
//		每个testID单独使用一个FindFilePath对象，并自动更新数据库
//        recorderRepository.findByIdRoleId(taskId);
        if (!analysisDataRepository.existsByTaskIdLike("%"+testId)) {
            FindFilePath ffp = new FindFilePath(new File(pathHead), testId);
            List<FilePath> filePath = ffp.getFilePath();
            prf.setTaskId(ffp.getTaskId());
            for (FilePath mFilePath : filePath) {
                prf.parseModuleFiles(mFilePath);
                if (isDebug) {
                    prf.outputDebugLog();
                }
            }
        }
        return analysisDataRepository.findByTaskIdLike("%"+testId);
    }
    public List<CountRecorder> getCountModuleData(String testId) {
//		先查询数据库历史记录中是否存在解析结果
//		每个testID单独使用一个FindFilePath对象，并自动更新数据库
//        recorderRepository.findByIdRoleId(taskId);
        return countRecorderRepository.findByTaskIdLike("%"+testId);
    }

    public List<AnalysisData> getDataByTestIdAndModuleName(String testId,String moduleName){
        List<AnalysisData> analysisDataList=analysisDataRepository.findByTaskIdLikeAndModuleName("%"+testId,moduleName);
        return analysisDataList;
    }

    public AnalysisData getDataById(Long id){
        AnalysisData analysisData=analysisDataRepository.findById(id);
        return analysisData;
    }

    public void save(AnalysisData AnalysisData){
        analysisDataRepository.save(AnalysisData);
    }

    public void saveAll(List<AnalysisData> AnalysisDataList){
        analysisDataRepository.saveAll(AnalysisDataList);
    }

    public  List<AnalysisData> getAllData(){
        return analysisDataRepository.findAll(SortTool.defaultSort());
    }

    public static final String pathHead = "D:\\jenkins\\workspace";

}
